Many machine monitoring and control systems include electrical communication between two machines. For example, a credit card reading machine at a grocery store communicates with a bank computer to verify a credit transaction. Often, engineers designing these machine-to-machine communication systems use data networks such as the Internet to facilitate communication between two machines or devices. For example, the Federal Aviation Administration (FAA) has a rule that transmission towers above a certain height must include a warning light for low flying aircraft. When the light burns out, the owner or operator of the tower must notify the FAA and must fix the light within a certain period of time. A notification system including a software application residing on a typical Internet server may be charged with notifying the FAA (and maintenance personnel) when a light on top of a tower goes out. However, there may be no readily convenient and cost effective way to hard-wire each of the light sensors on the hundreds or thousands of monitored towers. Instead, engineers use wireless communication to facilitate machine-to-machine communication between each of the towers and the notification system.
Wireless connections to the Internet have at least the following two problems. First, all of the physical areas that contain the remote devices may not be covered by the same wireless system. Some areas may be covered by Code Division Multiple Access (CDMA) cellular systems, but not by General Packet Radio Service (GPRS) or SMS. Other areas may be covered by GPRS, but not by CDMA. Some areas may have no wireless coverage at all. When no wireless service is available, the remote device may need to use the Plain Old Telephone System (POTS).
Simultaneously interfacing with multiple different protocols such as CDMA, GPRS, SMS, MMS, WiFi, WiMax, POTS, cable, DSL, satellite, etc is burdensome. An engineer designing the monitoring and control software must keep track of which devices use which protocols and adapt the software application accordingly. If one of the protocols (of which there are many) used by one of the devices (of which there may be thousands) changes, the engineer must adapt the software to accommodate this change. Therefore, a need exists for a system that enables engineers to design systems that can communicate with a wide variety of remote devices without or with little concern for what protocol(s) are required to communicate with each device.
The second problem is that wireless Internet devices are often assigned a “dynamic” Internet Protocol (IP) address. A dynamic IP address is a network address that changes. Originally, devices connected to the Internet each had a unique IP address that did not typically change (i.e., a static IP address). However, as the number of devices connected to the Internet have increased, the number of available IP addresses have started to become exhausted.
To conserve this limited number of IP addresses, wireless access providers assign IP addresses to a remote device dynamically on an as needed basis. More specifically, the wireless access providers keep a pool of IP addresses (e.g., 1,000) that is shared by a larger number of devices (e.g., 10,000). When a device is communicating, the wireless access provider assigns that device one of the available IP address. When a device is not communicating, that device does not have an assigned IP address. In this example, as long as no more than 1,000 of the possible 10,000 devices are communicating or are online simultaneously, the system works.
However, as a result of the dynamic allocation of IP addresses, a particular device may have one IP address at one time and another IP address at another time (or no IP address at all most of the time). This works fine for communications that are initiated by the remote device. However, when a machine such as the notification system needs to initiate a message to the remote device, the initiating device does not know what IP address to use for the remote device, because that address may have changed numerous times and/or the device may not even be currently assigned an IP address. Therefore, a need exists for a system that enables software running on application servers to initiate communication with remote devices without concern for the dynamic IP address associated with each remote device.